/********************************************************************************
 ***                                                                          *** 
 ********************************************************************************
 *                                                                              * 
 *           Prject Name : MEMORIA                                              * 
 *                                                                              * 
 *             File Name : hole.cpp                                             * 
 *                                                                              * 
 *            Programmer : LBW                                                  * 
 *                                                                              * 
 *            Start Date : 2020/12/26                                           * 
 *                                                                              * 
 *           Last Update : 2020/12/26  [LBW]                                    * 
 *                                                                              * 
 *------------------------------------------------------------------------------*
 * Functions:                                                                   * 
 *   Hole::Hole -- Hole类的构造函数                                             * 
 *   Hole::mousePressEvent -- 左键点击Hole触发的事件                            * 
 *   Hole::dragEnterEvent -- 将部件拖进Hole触发的事件                           * 
 *   Hole::dropEvent -- 将部件拖进Hole并且松开鼠标左键所触发的事件              * 
 *==============================================================================*/

#include <QtWidgets>

#include "hole.h"

/**********************************************************************************
 * Hole::Hole -- Hole类的构造函数                                                 *
 *                                                                                *
 *   Hole类是待填空的单词,Nail类是供选择的单词                                    *
 *   Hole类中储存着字符串answer表示正确的答案                                     *
 *   当用户把Nail表示的单词xxx拖到Hole中时,Hole会比较xxx与answer是否相符          *
 *   相符则绿色显示xxx表示正确                                                    *
 *   不相符则红色显示xxx表示错误                                                  *
 *                                                                                *
 * INPUT: str -- 该Hole的正确答案                                                 *
 *        parent -- Hole的父对象                                                *
 *                                                                                *
 * OUTPUT: none                                                                   *
 *                                                                                *
 * WARNINGS: none                                                                 *
 *                                                                                *
 * HISTORY:                                                                       *
 *   2020/12/26 LBW : Created.                                                    *
 *================================================================================*/

Hole::Hole(QString str,QWidget *parent):QPushButton(parent)
{
	answer = str;
	setText(str);
	setFixedWidth(sizeHint().width());
	setText("");
}

/**********************************************************************************
 * Hole::mousePressEvent -- 左键点击Hole触发的事件                                *
 *                                                                                *
 * INPUT: event -- 发生在Hole上的鼠标事件                                         *
 *                                                                                *
 * OUTPUT: none                                                                   *
 *                                                                                *
 * WARNINGS: none                                                                 *
 *                                                                                *
 * HISTORY:                                                                       *
 *   2020/12/26 LBW : Created.                                                    *
 *================================================================================*/

void Hole::mousePressEvent(QMouseEvent *event)
{
	if(event->button() == Qt::LeftButton){
		QDrag *drag = new QDrag(this);
		QMimeData *mimeData = new QMimeData();
		drag->setMimeData(mimeData);
		drag->exec();
	}
}

/**********************************************************************************
 * Hole::dragEnterEvent -- 将部件拖进Hole触发的事件                               *
 *                                                                                *
 * INPUT: event -- 发生在Hole上的拖动进入事件                                     *
 *                                                                                *
 * OUTPUT: none                                                                   *
 *                                                                                *
 * WARNINGS: none                                                                 *
 *                                                                                *
 * HISTORY:                                                                       *
 *   2020/12/26 LBW : Created.                                                    *
 *================================================================================*/

void Hole::dragEnterEvent(QDragEnterEvent *event)
{
	event->accept();
}

/**********************************************************************************
 * Hole::dropEvent -- 将部件拖进Hole并且松开鼠标左键所触发的事件                  *
 *                                                                                *
 * INPUT: event -- 发生在Hole上的拖动放置事件                                     *
 *                                                                                *
 * OUTPUT: none                                                                   *
 *                                                                                *
 * WARNINGS: none                                                                 *
 *                                                                                *
 * HISTORY:                                                                       *
 *   2020/12/26 LBW : Created.                                                    *
 *================================================================================*/

void Hole::dropEvent(QDropEvent *event)
{
	setText(event->mimeData()->text());

	if(text() != answer)
	{
		setStyleSheet("color:red");
	}else{
		setStyleSheet("color:green");
	}
}
